Neuplny vysledek joinu
Otázka od: Martin Pisarik
20. 4. 2004 14:16
Ahoj *,
Doufam, ze na tento dotaz nekdo zareaguje protoze uz fakt nevim.
Mam 3 tabulky: Artikl, Provedeni, AP. Tabulka AP obsahuje povolene kombinace
Artiklu a Provedeni a ma teda jen 3 fieldy (ID, Provedeni_ID, Artikl_ID)
A ted ten problem!
spojim ty tabulky takto:
SELECT *
FROM AP, Artikl, Provedeni
where Artikl.ID=AP.Artikl_ID
and Provedeni.ID=AP.Provedeni_ID
Vrati mi to ale min zaznamu, nez by melo. Zkoumal jsem to a zjistil jsem
strasnou vec! Od kazdeho Provedeni_ID mi to vrati max 50 zaznamu, takze
pokud by jich tam melo byt vic, tak mi to vrati 50 zaznamu a hotovo. V
dusledku toho je vysledek neuplny a misto 7280 zaznamu dostanu jen 5928.
Zkousel jsem i join ale vysledek stejny.
Vubec nevim cim to je.
Jsou to paradoxove tabulky *.db a pracuju s tim pres BDE.
Ja vim, ja vim, ale rady abych se vykaslal na BDE jsou mi ted k nicemu.
Tohle prece musi fungovat i v BDE ne?
Prosim pomozte!
Odpovedá: Karel Rys
20. 4. 2004 14:17
Martin Pisarik dne 20 Apr 2004 v 15:01:
> Doufam, ze na tento dotaz nekdo zareaguje protoze uz fakt nevim.
> Mam 3 tabulky: Artikl, Provedeni, AP. Tabulka AP obsahuje povolene
> kombinace Artiklu a Provedeni a ma teda jen 3 fieldy (ID,
> Provedeni_ID, Artikl_ID)
>
> A ted ten problem!
> spojim ty tabulky takto:
>
> SELECT *
> FROM AP, Artikl, Provedeni
> where Artikl.ID=AP.Artikl_ID
> and Provedeni.ID=AP.Provedeni_ID
A co zkusit
SELECT *, b.*, c.*
FROM AP a
LEFT OUTER JOIN Artikl b on (b.ID=a.Artikl_ID)
LEFT OUTER JOIN Provedeni c on (c.ID=a.Provedeni_ID)
Karel Rys
Odpovedá: Martin Pisarik
20. 4. 2004 14:56
No ja jsem zkousel JOIN a nefungovalo to dobre, ale s LEFT JOINEM to funguje
tak jak ma.
Takze dik moc.
Ale nechapu to.
Kdyz jsem mel ty data na mySQL tak muj dotaz fungoval dobre a kdyz jsem to
zkousel v Accessu, tak to taky fungovalo dobre. V tomto pripade mi LEFT
nevadi, ale co kdybych mel takova data, ze bych ho nemohl pouzit? Co pak?
A nebo nerozumim SQL?
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Karel Rys
Sent: Tuesday, April 20, 2004 3:11 PM
To: delphi-l@clexpert.cz
Subject: Re: Neuplny vysledek joinu
Martin Pisarik dne 20 Apr 2004 v 15:01:
> Doufam, ze na tento dotaz nekdo zareaguje protoze uz fakt nevim.
> Mam 3 tabulky: Artikl, Provedeni, AP. Tabulka AP obsahuje povolene
> kombinace Artiklu a Provedeni a ma teda jen 3 fieldy (ID,
> Provedeni_ID, Artikl_ID)
>
> A ted ten problem!
> spojim ty tabulky takto:
>
> SELECT *
> FROM AP, Artikl, Provedeni
> where Artikl.ID=AP.Artikl_ID
> and Provedeni.ID=AP.Provedeni_ID
A co zkusit
SELECT *, b.*, c.*
FROM AP a
LEFT OUTER JOIN Artikl b on (b.ID=a.Artikl_ID)
LEFT OUTER JOIN Provedeni c on (c.ID=a.Provedeni_ID)
Karel Rys
Odpovedá: Petr Langer
20. 4. 2004 14:57
Zkus INNER JOIN misto LEFT JOIN a porovnej, jestli nemas stejny vysledek jak
ti daval ten puvodni SQL dotaz, pak by to bylo jasne.
Petr Langer
----- Original Message -----
From: "Martin Pisarik" <martin.pisarik@seznam.cz>
Subject: Re: Neuplny vysledek joinu
> No ja jsem zkousel JOIN a nefungovalo to dobre, ale s LEFT JOINEM to
funguje
> tak jak ma.
> Takze dik moc.
> Ale nechapu to.
> Kdyz jsem mel ty data na mySQL tak muj dotaz fungoval dobre a kdyz jsem to
> zkousel v Accessu, tak to taky fungovalo dobre. V tomto pripade mi LEFT
> nevadi, ale co kdybych mel takova data, ze bych ho nemohl pouzit? Co pak?
> A nebo nerozumim SQL?
Odpovedá: Martin Pisarik
20. 4. 2004 15:33
INNER JOIN mi dava stejny vysledek jako LEFT JOIN.
Pouhy JOIN bez privlastku mi dava neuplny vysledek stejne jako select ...
where klauzule.
Tak nevim...
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Petr Langer
Sent: Tuesday, April 20, 2004 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: Neuplny vysledek joinu
Zkus INNER JOIN misto LEFT JOIN a porovnej, jestli nemas stejny vysledek jak
ti daval ten puvodni SQL dotaz, pak by to bylo jasne.
Petr Langer
----- Original Message -----
From: "Martin Pisarik" <martin.pisarik@seznam.cz>
Subject: Re: Neuplny vysledek joinu
> No ja jsem zkousel JOIN a nefungovalo to dobre, ale s LEFT JOINEM to
funguje
> tak jak ma.
> Takze dik moc.
> Ale nechapu to.
> Kdyz jsem mel ty data na mySQL tak muj dotaz fungoval dobre a kdyz jsem to
> zkousel v Accessu, tak to taky fungovalo dobre. V tomto pripade mi LEFT
> nevadi, ale co kdybych mel takova data, ze bych ho nemohl pouzit? Co pak?
> A nebo nerozumim SQL?
Odpovedá: Ludek ZITA
21. 4. 2004 1:55
On Behalf Of Martin Pisarik
> INNER JOIN mi dava stejny vysledek jako LEFT JOIN.
> Pouhy JOIN bez privlastku mi dava neuplny vysledek stejne
> jako select ... where klauzule. Tak nevim...
Ahoj.
JOIN natvrdo propoji jen existujici klice a vety bez vazby nevypisuje
LEFT JOIN propoji vety a vyise vse.
Co pamatuju tak to vzdy tak bylo.
MySQL s JOINY pracuje az do nejake vyssi verze a IMHO tam prave ma
rozdil od standardu.
Ludek
Odpovedá: Jan Blaha
21. 4. 2004 7:37
Neni nahodou v tabulce AP 50 kombinaci pro?
Mel jsi v joinech spravne nastavene left/right innner/outer join?
Nevim zda je v BDE defaultni left nebo right join, mozna by mohla pomoci
zmena poradi tabulek v selectu.
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz] On
Behalf Of Martin Pisarik
Sent: Tuesday, April 20, 2004 3:01 PM
To: delphi-l@clexpert.cz
Subject: Neuplny vysledek joinu
Ahoj *,
Doufam, ze na tento dotaz nekdo zareaguje protoze uz fakt nevim. Mam 3
tabulky: Artikl, Provedeni, AP. Tabulka AP obsahuje povolene kombinace
Artiklu a Provedeni a ma teda jen 3 fieldy (ID, Provedeni_ID, Artikl_ID)
A ted ten problem!
spojim ty tabulky takto:
SELECT *
FROM AP, Artikl, Provedeni
where Artikl.ID=AP.Artikl_ID
and Provedeni.ID=AP.Provedeni_ID
Vrati mi to ale min zaznamu, nez by melo. Zkoumal jsem to a zjistil jsem
strasnou vec! Od kazdeho Provedeni_ID mi to vrati max 50 zaznamu, takze
pokud by jich tam melo byt vic, tak mi to vrati 50 zaznamu a hotovo. V
dusledku toho je vysledek neuplny a misto 7280 zaznamu dostanu jen 5928.
Zkousel jsem i join ale vysledek stejny.
Vubec nevim cim to je.
Jsou to paradoxove tabulky *.db a pracuju s tim pres BDE.
Ja vim, ja vim, ale rady abych se vykaslal na BDE jsou mi ted k nicemu.
Tohle prece musi fungovat i v BDE ne?
Prosim pomozte!
Odpovedá: Jan Blaha
21. 4. 2004 7:34
To je dane jinym primarnim nastavenim DB. Napr. MSSQL ma default left
join a ORACLE right join.
Takze podobny rozdil muze byt i mezi Accessem, mysql a paradoxem. Totez
muze byt pro inner a outer. Jestlize to neuvedes explicitne v dotazu,
tak to databaze doplni defaultne a muze byt problem...
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz] On
Behalf Of Martin Pisarik
Sent: Tuesday, April 20, 2004 4:18 PM
To: delphi-l@clexpert.cz
Subject: Re: Neuplny vysledek joinu
INNER JOIN mi dava stejny vysledek jako LEFT JOIN.
Pouhy JOIN bez privlastku mi dava neuplny vysledek stejne jako select
... where klauzule. Tak nevim...
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Petr Langer
Sent: Tuesday, April 20, 2004 3:43 PM
To: delphi-l@clexpert.cz
Subject: Re: Neuplny vysledek joinu
Zkus INNER JOIN misto LEFT JOIN a porovnej, jestli nemas stejny vysledek
jak ti daval ten puvodni SQL dotaz, pak by to bylo jasne.
Petr Langer
----- Original Message -----
From: "Martin Pisarik" <martin.pisarik@seznam.cz>
Subject: Re: Neuplny vysledek joinu
> No ja jsem zkousel JOIN a nefungovalo to dobre, ale s LEFT JOINEM to
funguje
> tak jak ma.
> Takze dik moc.
> Ale nechapu to.
> Kdyz jsem mel ty data na mySQL tak muj dotaz fungoval dobre a kdyz
> jsem to zkousel v Accessu, tak to taky fungovalo dobre. V tomto
> pripade mi LEFT nevadi, ale co kdybych mel takova data, ze bych ho
> nemohl pouzit? Co pak? A nebo nerozumim SQL?